package com.ysx.oa.resume.service;

import com.ysx.oa.resume.Bean.ResumeBean;
import com.ysx.oa.resume.entity.ResumeEntity;

import java.util.ArrayList;

/**
 * @author 黄德标
 * @date 2021/11/22 19:54
 */
public interface ResumeService {

    /**
     * 方法描述: 学生 新增 履历记录
     * @author: 黄德标
     * @date: 2021/11/22 20:02
     * @return:
     * 返回1 则新增成功，
     * 返回2 则companyId不存，
     * 返回3 则jobId不存在，
     * 返回4 则学生评价内容过长，不应该超过255个字符
     * 返回5 则学生备注内容过长，不应该超过255个字符
     */
    int addResumeEntityByStudentId(ResumeEntity resumeEntity);

    /**
     * 方法描述: 根据 resumeId 删除 学生的面试记录
     * @author: 黄德标
     * @date: 2021/11/22 21:54
     * @param: [java.lang.Integer]
     * @return: 返回0 删除失败，请同学 先删除此面试记录 的所有面试问答，
     *          返回1 删除成功
     */
    int deleteResumeByResumeId(Integer resumeId);

    /**
     * 方法描述: 根据 传入对象的resumeId 修改面试记录
     * @author: 黄德标
     * @date: 2021/11/22 22:06
     * @param: [com.ysx.oa.resume.entity.ResumeEntity]
     * @return: int
     */
    int updateResumeByResumeId(ResumeEntity resumeEntity);

    /**
     * 方法描述: 根据 resumeId 查询面试记录的所有信息
     * @author: 黄德标
     * @date: 2021/11/23 17:26
     * @param: []
     * @return: com.ysx.oa.resume.Bean.ResumeBean
     */
    ResumeBean selectResumeBeanByResumeId(Integer resumeId);



    /**
     * 方法描述: 根据 ResumeId 查询面试记录
     * @author: 黄德标
     * @date: 2021/11/21 19:07
     * @params: [resumeId]
     * @returns: ResumeEntity实体
     */
    ResumeEntity selectResumeEntityByResumeId(Integer resumeId);

    /**
     * 方法描述: 根据 studentId 查询 此学生 所有面试记录
     * @author: 黄德标
     * @date: 2021/11/21 19:23
     * @params: [studentId]
     * @returns: ResumeEntity对象的集合
     */
    ArrayList<ResumeEntity> selectResumeEntityByStudentId(Integer studentId);

    /**
     * 方法描述: 根据 studentId 查询 此学生 所有面试记录
     * @author: 黄德标
     * @date: 2021/11/24 11:58
     * @params: [studentId]
     * @returns: ResumeBean对象的集合
     */
    ArrayList<ResumeBean> selectResumeBeanByStudentId(Integer studentId);


    /**
     * 方法描述: 根据 teacherId 查询本班 所有学生 所有面试记录
     * @author: 黄德标
     * @date: 2021/11/25 16:48
     * @param: [java.lang.Integer]
     * @return: java.util.ArrayList<com.ysx.oa.resume.Bean.ResumeBean>
     */
    ArrayList<ResumeBean> findResumeByTeacherId(Integer teacherId);


    /**
     * 方法描述: 根据 classId 查询 此班级所有学生的 所有面试记录
     * @author: 黄德标
     * @date: 2021/11/21 19:38
     * @params: [classId]
     * @returns: ResumeEntity对象的集合
     */
    ArrayList<ResumeEntity> selectResumeEntityByClassId(Integer classId);

    /**
     * 方法描述: 根据 companyId 查询 此公司面试过的学生 的所有面试记录
     * @author: 黄德标
     * @date: 2021/11/21 19:38
     * @params: [companyId]
     * @returns: ResumeEntity对象的集合
     */
    ArrayList<ResumeEntity> selectResumeEntityByCompanyId(Integer companyId);

    /**
     * 方法描述: 根据 传入的ResumeEntity对象的 STUDENT_ID、COMPANY_ID、JOB_ID、DATE属性
     *          进行筛选符合要求的 面试履历记录
     * @author: 黄德标
     * @date: 2021/11/21 20:04
     * @params: [resumeEntity]
     * @returns: ResumeEntity对象的集合
     */
    ArrayList<ResumeEntity> selectResumeEntityByResumeEntity(ResumeEntity resumeEntity);



    /**
     * 方法描述: 将 传入的resumeEntity对象 进行属性校验
     * @author: 黄德标
     * @date: 2021/11/23 14:44
     * @param: [com.ysx.oa.resume.entity.ResumeEntity]
     * @return: 返回1 校验通过，
     *          返回2 则学号不存在，
     *          返回3 则companyId不存，
     *          返回4 则jobId不存在，
     *          返回5 则学生评价内容过长，不应该超过255个字符
     *          返回6 则学生备注内容过长，不应该超过255个字符
     */
    Integer checkResumeEntityAttr(ResumeEntity resumeEntity);

    /**
     * 方法描述:
     * @author: 黄德标
     * @date: 2021/11/23 15:20
     * @param: [java.lang.Integer]
     * @return: 返回true 则不存在
     * 返回false 则存在
     */
    boolean checkResumeIsNull(Integer resumeId);

}
